#include "Matrix.h"


#include <gl\glut.h>
Matrix::Matrix()
{
	for ( int i = 0; i <16; i++)
	{
		m_matrix[i] = 0;
	}
}

void Matrix::SetIdentity()
{
	for ( int i = 0; i <16; i++)
	{
		m_matrix[i] = 0;
		if(i % 5 == 0)
		{
			m_matrix[i] = 1;
		}
	}
	
}

void Matrix::MultiOpenGL()
{
	glMultMatrixf(m_matrix);
}

void Matrix::Translate(float x, float y, float z)
{
	int i = 0;
	for ( ; i <16; i++)
	{
		m_matrix[i] = 0;
		if(i % 5 == 0)
		{
			m_matrix[i] = 1;
		}
	}
	m_matrix[12] = x;
	m_matrix[13] = y;
	m_matrix[14] = z;
}

Matrix Matrix::operator* (const Matrix& mat)
{
	Matrix m = *this;

	for ( int i = 0; i < 16; i++)
	{
		for ( int j = 0; j < 12; j += 4)
		{
			m.m_matrix[i] = 
				  (m_matrix[i%4] * mat.m_matrix[j]) 
				+ (m_matrix[i%4 + 4] * mat.m_matrix[j + 1])
				+ (m_matrix[i%4 + 8] * mat.m_matrix[j + 2]) 
				+ (m_matrix[i%4 + 12] * mat.m_matrix[j + 3]);
		}
	}

	return m;
}